home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / viewers / polyview / polyvw31.lha / Polyview3.1 / new / aiff.h next >
C/C++ Source or Header  |  1993-06-23  |  2KB  |  90 lines

  1. /* ------------------------------------------------------------------------ */
  2. /* THIS IS NOT NCSA-DEVELOPED SOFTWARE.                                     */
  3. /* This file is based on /usr/people/4Dgifts/examples/libaudio/aiff.h       */
  4. /* as shipped with Silicon Graphics IRIX 4.0.2.                             */
  5. /* ------------------------------------------------------------------------ */
  6.  
  7. /* $Header: /usr3/people/gbourhis/pv3/new/RCS/aiff.h,v 1.1 92/09/18 10:55:26 marca Exp $ */
  8.  
  9. #ifdef RCSLOG
  10. $Log:    aiff.h,v $
  11.  * Revision 1.1  92/09/18  10:55:26  marca
  12.  * Initial revision
  13.  * 
  14. #endif
  15.  
  16. /*
  17.  * AIFF format header file
  18.  * bytes are stored in 68000 = big endian order
  19.  */ 
  20.  
  21. /*
  22.  * some of the audio parameters in an AIFF file
  23.  */
  24. typedef struct
  25. {
  26.     long samprate;
  27.     long nchannels;
  28.     long sampwidth;
  29. } audio_params_t;
  30.  
  31. /*
  32.  * all chunks consist of a chunk header followed by some data
  33.  *
  34.  * WARNING: the spec says that every chunk must contain an even number 
  35.  * of bytes. A chunk which contains an add number of bytes is padded with
  36.  * a trailing zero byte which is NOT counted in the chunk header's size
  37.  * field.
  38.  */
  39. typedef struct
  40. {
  41.     char id[4];
  42.     long size;
  43. } chunk_header_t;
  44.  
  45. #define CHUNK_ID     4
  46. #define CHUNK_HEADER 8
  47.  
  48. typedef struct
  49. {
  50.     chunk_header_t header;
  51.     int file_position;  /* not in AIFF file */
  52.     char type[4]; /* should contain 'AIFF' for any audio IFF file */
  53. } form_chunk_t;
  54.  
  55. #define FORM_CHUNK      12  /* including the header */ 
  56. #define FORM_CHUNK_DATA 4   
  57.  
  58. #define COMM_CHUNK      26   /* including the header */
  59. #define COMM_CHUNK_DATA 18
  60.  
  61. typedef struct
  62. {
  63.     chunk_header_t header;
  64.     int file_position;            /* not in AIFF file */
  65.     short nchannels;
  66.     unsigned long nsampframes;
  67.     short sampwidth;
  68.     long samprate;              /* not in AIFF file */
  69. } comm_chunk_t;
  70.  
  71.  
  72. #define SSND_CHUNK      16   /* including the header */
  73. #define SSND_CHUNK_DATA 8
  74.  
  75. typedef struct
  76. {
  77.     chunk_header_t header;
  78.     unsigned long offset;
  79.     unsigned long blocksize;
  80.  
  81.     long file_position; /* not in AIFF file */
  82.     long sample_area_bytes; /* not in AIFF file */
  83. } ssnd_chunk_t;
  84.  
  85.  
  86. /* ----------------------------- NEW ROUTINES ----------------------------- */
  87. extern int InitSound (void);
  88. extern void PlayAFile (char *);
  89. /* ------------------------- end of new routines -------------------------- */
  90.